package com.gzs.learn.payment.service;

import com.gzs.learn.inf.PageResponseDto;
import com.gzs.learn.payment.inf.dto.web.PaymentChannel;
import com.gzs.learn.payment.inf.dto.web.req.PaymentChannelSearchDto;
import com.gzs.learn.payment.model.po.PaymentChannelConfig;

import java.util.List;

/**
 * 支付配置Service接口
 *
 * @author guanzhisong
 * @date 2021-08-25
 */
public interface IPaymentChannelConfigService {
    /**
     * 查询支付配置
     *
     * @param id 支付配置ID
     * @return 支付配置
     */
    PaymentChannelConfig getConfigById(Long id);

    /**
     * 获取指定的渠道
     *
     * @param id
     * @return
     */
    PaymentChannel getChannelById(Long id);

    /**
     * 查询支付配置
     *
     * @param channelId 渠道ID
     * @return 支付配置
     */
    PaymentChannel getByChannelId(Integer channelId);

    /**
     * 查询支付配置列表
     *
     * @param searchDto 支付配置
     * @return 支付配置集合
     */
    PageResponseDto<PaymentChannel> searchList(PaymentChannelSearchDto searchDto);

    /**
     * 新增支付配置
     *
     * @param paymentChannel 支付配置
     * @return 结果
     */
    int insertPaymentChannelConfig(PaymentChannel paymentChannel);

    /**
     * 修改支付配置
     *
     * @param paymentChannel 支付配置
     * @return 结果
     */
    int updatePaymentChannelConfig(PaymentChannel paymentChannel);

    /**
     * 获取所有启用状态的支付渠道配置
     *
     * @return
     */
    List<PaymentChannelConfig> selectAllEnableChannel();

    /**
     * 初始化渠道配置
     */
    void init();
}
